Obsidian-Digital-Garden 中文 URL 跳转问题
我在使用 Obsidian-Digital-Garden 插件,处理中文 URL 时,遇到内部链接解析错误的问题,URL 会将链接中的中文忽略掉,导致跳转失败。
通过研究,插件由两部分组成:
- obsidian-digital-garden:Obsidian Plugin,识别 Obsidian Vault 中需要导出的页面,并通过 GitHub API 进行提交
- oleeskild/digitalgarden:前端站点,用于部署到 Vercel 上, obsidian-digital-garden 将需要导出的 Markdown 页面提交到本仓库中。当访客浏览时,这个项目通过 markdown-it 加载相应的 Markdown 笔记,动态渲染成 HTML 后进行展示。
通过分析,我发现 HTML 的内部跳转 URL 实际上是在 oleeskild/digitalgarden 中动态处理的。因此在仓库中通过一行代码修复:
.eleventy.js:
// let permalink = `/notes/${slugify(fileName)}`;
let permalink = `/notes/${fileName}`;
在这个插件中,提供一个 slugify 功能,用于产生友好的 URL,需要插件的两部分相互配合:
- obsidian-digital-garden:通过 slugify 决定导出页面的文件名
- oleeskild/digitalgarden:通过 slugify 处理内链的 URL
因此,需要内链 URL 与导出页面的文件名匹配,才能内部跳转成功。然而所使用的 slugify 库,它不支持中文。
尽管插件提供了一个 slugify 开关,但该开关只对 obsidian-digital-garden 生效,oleeskild/digitalgarden 代码中只有 slugify 逻辑。这样,就算在 0.0 Obsidian 介绍 中关闭 slugify 开关,仍然有问题(导出文件与笔记目录、文件名一致,而内链仍然是残缺的 slugify)。
因此,我上面的修复代码,需要搭配 slugify 开关一同使用。这样,不管是导出页面,还是内链,都遵循与笔记目录、文件名一致。
本文作者:Maeiee
本文链接:Obsidian-Digital-Garden 中文 URL 跳转问题
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!